flavor type
TypeScriptの文脈の一部でのみ使われている名称
モチベーション
UserId型には3のようなただの数値も代入できなくなるぐらい厳しい
GraphQLなどのコード生成時に問題になるとのこと ref Flavor型の定義例
code:ts
type Flavor<T, U extends string> = T & { _type?: U };
使用例
code:ts
type UserId = Flavor<number, "UserIde">
以下のような操作が可能
code:ts
const userId: UserId = 1
同じ方法で定義した、UserIdとPostIdなどはちゃんと区別される
constructorを通さなくても、その型の値を生成できてしまうということ
これ、そもそも問題としてることがいまいちわからないなmrsekut.icon
「branded typesはsmart constructorと組み合わすことで発揮される」と捉えるならば、flavor typeは不要だと思う
でもまあそういう需要はあるのだと思う、しらんけど
参考